<?php


/**
 * 子域名遍历
 * 举例如58同城域名www.58.com
 * 不同区域不同域名 常州 cz.58.com. 北京 bj.58.com.
 * area数据库语句保存在sql实例中遍历所有区域的子域名
 * @return mixed
 */
function getSubSite(){
    $map['is_open'] = 1; //为1打开子域名
    //$list = M("area")->field(true)->where($map)->select();
    $list=["常州"=>"cz","背景"=>"bj"];
    //数据库中查找打开子域名的列表
    $cdomain = explode(".",$_SERVER['HTTP_HOST']);
    //将服务器地址进行拆分。例如www.dechengdai.com
    $cpx = array_pop($cdomain);
    //把地址中后面部分包括端口出栈给$cpx
    $doamin = array_pop($cdomain);
    //$cdomain前面出栈后倒数第二个数再次出栈 $doamin为dechengdai
    $host = ".".$doamin.".".$cpx;  //拼接 .dechengdai.com
    foreach($list as $key=>$v){    // cz.dechengdai.com
		$list[$key]['host'] = "http://".$v['domain'].$host;
	}
    return $list;
}


/**
 * 获取客户端ip地址
 * 注意:HTTP_*开头的都可以通过http头来伪造客户端地址
 * 伪造地址:
 * 请求头 X-Forwarded-For:192.168.1.4n”;//HTTP_X_FORWARDED_FOR的值
 * 请求头 client_ip:192.168.1.5n”;//HTTP_CLIENT_IP的值
 * 如果未设置头HTTP_CLIENT_IP/HTTP_X_FORWARDED_FOR都是空的 否则就是上面模拟的地址.
 * REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP (有可能是用户，有可能是代理的)IP,不能通过上面方式伪造
 *
 * IIS 6.0下配置PHP，通常有CGI、ISAPI和FastCGI三种配置方式,FastCGI性能比ISAPI高
 * getenv()和$_SERVER的区别: getenv取得系统环境变量,格式name=value,$_SERVER是服务器超级全局变量数组也能够或渠道系统变量的值 区别在于getenv不支持IIS的ISAPI模式
 * @return array|false|string
 */
function getIp() {

    if (getenv('HTTP_CLIENT_IP')) {
        $ip = getenv('HTTP_CLIENT_IP');
    }
    elseif (getenv('HTTP_X_FORWARDED_FOR')) { //获取客户端用代理服务器访问时的真实ip 地址
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_X_FORWARDED')) {
        $ip = getenv('HTTP_X_FORWARDED');
    }
    elseif (getenv('HTTP_FORWARDED_FOR')) {
        $ip = getenv('HTTP_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_FORWARDED')) {
        $ip = getenv('HTTP_FORWARDED');
    }
    else if(!empty($_SERVER["REMOTE_ADDR"])){
        $ip = $_SERVER["REMOTE_ADDR"];
    }else{
        $ip = "unknown";
    }
    return $ip;
}


/**
 * 获取当前页面完整的URL
 * 例如: http://www.dechengdai.com/demo/cs
 * @return string
 */
function curPageURL() {
    $pageURL = 'http'; //拼接准备
    if (!empty($_SERVER['HTTPS'])) {$pageURL .= "s";}
    $pageURL .= "://";  //判断是否https拼接
    if ($_SERVER["SERVER_PORT"] == "80"||$_SERVER["SERVER_PORT"] == "443" ) {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];//如果是80或443直接拼接请求
    } else {
        //不是80或443端口拼接端口及请求地址
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}
